package clienteServidor;

import java.awt.image.BufferedImage;
import java.io.*;
import java.net.*;
import java.util.Scanner;
import javax.imageio.ImageIO;


public class Cliente{
    private ObjectOutputStream salida;
    private String dirServidor;
    private Socket cliente;
    private int puerto;
   
    public Cliente(String host, int puerto) {
       dirServidor = host; 
       this.puerto=puerto;
    }
   
    private void enviarArchivo(){
        try {
            System.out.println("Conectando...\n");
            cliente = new Socket(InetAddress.getByName(dirServidor),puerto);
            System.out.println("Conectado a: " + cliente.getInetAddress().getHostName());
            salida = new ObjectOutputStream( cliente.getOutputStream() );
            Imagen img = pedirImagen();
            
            salida.writeObject(img.getNombre()); // manda el nombre de la imagen
            
            ByteArrayOutputStream salidaImagen = new ByteArrayOutputStream();
            ImageIO.write(img.getImagen(), "jpg", salidaImagen);
            byte[] bytesImagen = salidaImagen.toByteArray();
            
            salida.writeObject(bytesImagen); //  manda la imagen en sí
            
            System.out.println("HECHO. Archivo enviado");

       }catch (EOFException excepcionEOF){
           System.err.println( "Cierre de conexión inesperado!!!" );
       }catch (IOException es){
           System.err.println("Servidor NO ECONTRADO... conection refused: ");
           es.printStackTrace();
       }finally {
            try {
                salida.close();
                cliente.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
       }
    } 
    private Imagen pedirImagen() throws IOException{
        Scanner s=new Scanner(System.in);
        System.out.println("Ingrese el nombre de la imagen (de la carpeta imagenes) a enviar: " );
        String imagen=s.nextLine();
        URL rutaURL = getClass().getResource("/imagenes/"+imagen);
        return new Imagen(imagen,ImageIO.read(rutaURL));
    }
    public static void main( String args[] ) {
       Cliente cli= new Cliente("127.0.0.1",4000);
       cli.enviarArchivo();
    }
} 
